/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mowa.biblioteca.dao.hibernate;

import com.mowa.biblioteca.dao.LibroDao;
import com.mowa.biblioteca.model.Categoria;
import com.mowa.biblioteca.model.EstadoUsuarioLibro;
import com.mowa.biblioteca.model.Libro;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;

@Component
public class LibroDaoHibernate extends HibernateDaoSupport implements LibroDao {

    @Autowired
    public LibroDaoHibernate(SessionFactory sessionFactory) {
        setSessionFactory(sessionFactory);
    }

    @Override
    public List<Libro> obtenerLibros(Libro obj) {
        StringBuilder query = new StringBuilder("FROM Libro l ");

        if (obj.getNombre() != null && !obj.getNombre().isEmpty()) {
            query.append(" where upper(l.nombre) like '%").append(obj.getNombre().toUpperCase()).append("%'");
        }

//where idcategoria = ifnull(null,idcategoria) and upper(l.nombre) like upper(concat('%', ifnull('dia','' ),'%'))
       /*
        if (obj.getCategoria().getIdcategoria() > 0) {
            query.append(" and idcategoria = ").append(obj.getCategoria().getIdcategoria().toString()).append(";");
        }
*/
        List list = getHibernateTemplate().find(query.toString());
        return list;
    }

    @Override
    public Libro obtenerLibro(int id) {
        Libro libro = null;
        libro = (Libro) getHibernateTemplate().get(Libro.class, id);
        return libro;
    }

    @Override
    public void grabarLibro(Libro obj) {
        getHibernateTemplate().saveOrUpdate(obj);
    }

    @Override
    public void modificarLibro(Libro obj) {
        getHibernateTemplate().saveOrUpdate(obj);
    }

    @Override
    public List<Categoria> obtenerListaCategoria() {
        StringBuilder query = new StringBuilder("FROM Categoria c ");
        List list = getHibernateTemplate().find(query.toString());
        return list;
    }

     @Override
    public List<EstadoUsuarioLibro> obtenerListaEstadoUsuarioLibro() {
        StringBuilder query = new StringBuilder("FROM EstadoUsuarioLibro eul ");
        List list = getHibernateTemplate().find(query.toString());
        return list;
    }
}
